#pragma once
#include "StdAfx.h"
//#include "EntityControl.h"

//class EntityControl;

class PhysicsEntity 
{
protected:
	Ogre::SceneNode* ogreNode;
	NxActorDesc actorDesc;				
	NxBoxShapeDesc boxDesc;
	NxActor* actor;
	NxBodyDesc bodyDesc;
public:
	/*PhysicsEntity(
		OgreBulletDynamics::DynamicsWorld*, std::deque<OgreBulletDynamics::RigidBody *>,
		std::deque<OgreBulletCollisions::CollisionShape *>,
		EntityControl*,
		Ogre::SceneNode*, float weight=3.0f, float box=0.95);

	PhysicsEntity(
		std::deque<OgreBulletDynamics::RigidBody *>,
		std::deque<OgreBulletCollisions::CollisionShape *>,
		const OgreBulletDynamics::RigidBody&,
		OgreBulletCollisions::CollisionShape*,
		EntityControl*,
		Ogre::SceneNode*, float weight=3.0f);*/

	// Physx part
	PhysicsEntity(Ogre::SceneNode* ogreNode,NxActorDesc actorD, NxScene* physXScene, bool isKinematic, bool isStatic, int collisionGroup);
	NxActor* getNxActor();
	Ogre::SceneNode* getOgreNode();

	~PhysicsEntity(void);

	/*void setShape(Ogre::SceneNode *node, 
		OgreBulletCollisions::CollisionShape *shape,
		const float      bodyRestitution,
		const float      bodyFriction,
		const float      bodyMass,
		EntityControl*   entityControl,
		const Ogre::Vector3 &pos = Ogre::Vector3::ZERO, 
		const Ogre::Quaternion &quat = Ogre::Quaternion::IDENTITY);*/

};